/*
 * TacticaAmingos.java
 *
 * Created on 17 de julio de 2006, 15:06
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package futbol.tacticas.concursantes2007.AmingosUnidos;

import futbol.tacticas.concursantes.Tactica;

import java.awt.*;
import java.util.Vector;
import futbol.tacticas.*;
/**
 *
 * @author Administrador
 */
public class TacticaAmingos implements Tactica{
    
    private int nValores[][]={
        // Portero
        {-150,0,5},  // Jugador 1[0]
        // Defensas
        {-120,-20,7},  // Jugador 2[1]
        {-120,20,7},  // Jugador 3[2]
        {-140,-50,5},  // Jugador 4[3]
        {-140,50,5},  // Jugador 5[4]
        // Medios
        {-20,0,4},  // Jugador 6[5]
        {0,-80,4},  // Jugador 7[6]
        {0,80,4},  // Jugador 8[7]
        // Delanteros
        {80,-50,4},  // Jugador 9[8]
        {80,50,4},  // Jugador 10[9]
        {100,0,7}  // Jugador 11[10]
    };
    
    public Color getColor1() {
        return Color.black;
    }

    public Color getColor2() {
        return Color.red;
    }

    public Color getColorNumero() {
        return Color.white;
    }

    public String getNombre() {
        return "Amingos Unidos";
    }

    public int getXInicial(int n) {
        return nValores[n][0];
    }

    public int getYInicial(int n) {
        return nValores[n][1];
    }

    public int getFuerza(int n) {
        return nValores[n][2];
    }

    public Vector<Comando> getComandos(SituacionJugadores sj) {
        Vector<Comando> com=new Vector();
        
        //Posicionamiento
        for (int n=0;n<11;n++)
            com.add(new ComandoIrA(n,nValores[n][0],nValores[n][1]));

        Point bola=sj.getBola();
        Point jugadores[]=sj.getMisJugadores();
        Point contrarios[]=sj.getContrario();
        
        //Movimiento portero
        int y=(int)(bola.getY()/2);
        if (y<-20) y=-20;
        if (y>20) y=20;
        com.add(new ComandoIrA(0,nValores[0][0], y));
        com.add(new ComandoTiroAPuerta(0,40));
         
        
        // Defensa
        if(bola.getX()<-80) {
            for(int n=1; n<5; n++)
                com.add(new ComandoIrA(n, bola.getX(), bola.getY()));
        } else {
            if(bola.getX()<-50) {
                com.add(new ComandoIrA(1,bola.getX(), bola.getY()));
                com.add(new ComandoIrA(2,bola.getX(), bola.getY()));
            }
        }
        
        for(int n=1; n<5; n++)
            com.add(new ComandoTiroAPuerta(n,0));
        
        

        
        // Medios
        int nJug=sj.getMasCercanoDeBola();
        if(nJug>4 && nJug<8)
            com.add(new ComandoIrA(nJug,bola.getX(), bola.getY()));
        
        if (!sj.estoyMasCercaDeBola()){
            for (int n=5;n<8;n++){
                int nCC=sj.getContrarioMasCerca(getXInicial(n), getYInicial(n));
                if(jugadores[n].getX()<bola.getX())
                    com.add(new ComandoIrA(n, contrarios[nCC].getX()+15, contrarios[nCC].getY()));
                else
                    com.add(new ComandoIrA(n, contrarios[nCC].getX()-15, contrarios[nCC].getY()));
            }
        }
        
        if(bola.getX()<0) {
            com.add(new ComandoTiroAPuerta(5,0));
            com.add(new ComandoTiroAPuerta(6,20));
            com.add(new ComandoTiroAPuerta(7,-20));
        } else {
            com.add(new ComandoPase(5,10));
            com.add(new ComandoPase(6,8));
            com.add(new ComandoPase(7,9));
        }
        
        
        
        // Delanteros
        if(bola.getX()<0) {
            int nCC=sj.getContrarioMasCerca(getXInicial(8), getYInicial(8));
            com.add(new ComandoIrA(8, contrarios[nCC].getX()-60, contrarios[nCC].getY()));
            
            nCC=sj.getContrarioMasCerca(getXInicial(9), getYInicial(9));
            com.add(new ComandoIrA(9, contrarios[nCC].getX()-60, contrarios[nCC].getY()));
        }
        
        nJug=sj.getMasCercanoDeBola();
        if(nJug>7)
            com.add(new ComandoIrA(nJug,bola.getX(), bola.getY()));
        
        if(jugadores[10].getX()<50) {
            com.add(new ComandoTiroAPuerta(8,20));
            com.add(new ComandoTiroAPuerta(9,20));
        } else {
            com.add(new ComandoPase(8,10));
            com.add(new ComandoPase(9,10));
        }
        
        com.add(new ComandoTiroAPuerta(10,0));
        
        
        return com;
    }
    
}
